package com.somiz.article;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

import org.freixas.jcalendar.JCalendarCombo;
import org.hibernate.Session;

import com.gest.util.Dates;
import com.gest.util.FileDirectoryUtil;
import com.gest.util.FilterComboBox;
import com.gest.util.ImagePanel;
import com.somiz.affectation.Affectation;
import com.somiz.famille.Famille;
import com.somiz.fournisseur.Fournisseur;
import com.somiz.gamme.Gamme;
import com.somiz.main.Control;
import com.somiz.main.Principal;
import com.somiz.marque.Marque;
import com.somiz.utilisateur.Utilisateur;
import com.tech.hibernate.HibernateUtil;

public class ArticleForm extends JPanel {
	private JTextField T_code;
	private JTextField T_lienImage;
	private JTextField T_ns;
	private FilterComboBox C_famille;
	private FilterComboBox C_gamme;
	private FilterComboBox C_marque;
	private JComboBox C_etat;
	private FilterComboBox C_fournisseur;
	private FilterComboBox C_utilisateur;
	private ImagePanel imagePanel;
	private JCalendarCombo C_dateAcquisition;
	private static Long articleId;
	private static String nomImage;

	/**
	 * Create the panel.
	 */
	public ArticleForm() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		C_famille = ListeCombFamille(session, C_famille);
		C_fournisseur = ListeCombFournisseur(session, C_fournisseur);
		C_gamme = ListeCombGamme(session, C_gamme);
		C_marque = ListeCombMarque(session, C_marque);
		C_utilisateur = ListeCombUtilisateur(session, C_utilisateur);
		session.close();
		setLayout(null);
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(UIManager
				.getBorder("TitledBorder.border"), "Article :",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel.setBounds(10, 101, 402, 364);
		add(panel);

		JLabel lblCode = new JLabel("Code :");
		lblCode.setBounds(29, 26, 102, 28);
		panel.add(lblCode);

		T_code = new JTextField();
		T_code.setColumns(10);
		T_code.setBounds(133, 20, 239, 34);
		panel.add(T_code);

		JLabel lblNs = new JLabel("NS :");
		lblNs.setBounds(29, 68, 102, 28);
		panel.add(lblNs);

		T_ns = new JTextField();
		T_ns.setColumns(10);
		T_ns.setBounds(133, 62, 239, 34);
		panel.add(T_ns);

		JLabel lblFamille = new JLabel("Famille :");
		lblFamille.setBounds(29, 110, 102, 28);
		panel.add(lblFamille);

		C_famille.setBounds(133, 104, 192, 34);
		panel.add(C_famille);

		JLabel lblGamme = new JLabel("Gamme :");
		lblGamme.setBounds(29, 152, 102, 28);
		panel.add(lblGamme);

		C_gamme.setBounds(133, 146, 192, 34);
		panel.add(C_gamme);

		JLabel lblMarque = new JLabel("Marque :");
		lblMarque.setBounds(29, 194, 102, 28);
		panel.add(lblMarque);

		C_marque.setBounds(133, 188, 192, 34);
		panel.add(C_marque);

		JLabel lblEtat = new JLabel("Etat :");
		lblEtat.setBounds(29, 236, 102, 28);
		panel.add(lblEtat);
		C_etat = new JComboBox();
		C_etat.addItem("Bon");
		C_etat.addItem("Moyen");
		C_etat.addItem("Mauvais");
		C_etat.setBounds(133, 230, 239, 34);
		panel.add(C_etat);

		JLabel lblDateAcquisition = new JLabel("Fournisseur :");
		lblDateAcquisition.setBounds(29, 278, 102, 28);
		panel.add(lblDateAcquisition);

		C_fournisseur.setBounds(133, 272, 192, 34);
		panel.add(C_fournisseur);

		JLabel lblDateAcquisition_1 = new JLabel("Date acquisition :");
		lblDateAcquisition_1.setBounds(29, 320, 102, 28);
		panel.add(lblDateAcquisition_1);

		JButton button_4 = new JButton("");
		button_4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (!C_famille.getSelectedItem().toString().equals("")) {
					Famille famille = new Famille();
					famille.setNom(C_famille.getSelectedItem().toString());
					Session session = HibernateUtil.getSessionFactory().openSession();
					if (Control.getFamilleDao().isExisteAvecNom(famille,session)) {
						famille = Control.getFamilleDao().TrouverAvecNom(
								famille, session);
						Control.getFamilleForm().vider();
						Control.getFamilleForm().FamilleVersForm(famille);
						Control.getPrincipal()
								.getTabbedPane()
								.addTab("Famille",
										new ImageIcon(
												Principal.class
														.getResource("/cc/black/png/cert_icon&16.png")),
										Control.getFamilleForm(), null);
						Control.getPrincipal()
								.getTabbedPane()
								.setSelectedIndex(
										Control.getPrincipal().getTabbedPane()
												.getTabCount() - 1);
					} else {
						JOptionPane
								.showMessageDialog(
										null,
										"- Cette famille n'existe pas dans votre base de donnees",
										"Erreur", JOptionPane.WARNING_MESSAGE);
					}
					session.close();
				} else {
					JOptionPane.showMessageDialog(null,
							"- Il faut renseigner le champ famille", "Erreur",
							JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		button_4.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/info_icon&24.png")));
		button_4.setPreferredSize(new Dimension(50, 50));
		button_4.setMnemonic(KeyEvent.VK_ENTER);
		button_4.setBackground(Color.WHITE);
		button_4.setBounds(328, 104, 44, 34);
		panel.add(button_4);

		JButton button_5 = new JButton("");
		button_5.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (!C_gamme.getSelectedItem().toString().equals("")) {
					Gamme gamme = new Gamme();
					gamme.setNom(C_gamme.getSelectedItem().toString());
					Session session = HibernateUtil.getSessionFactory()
							.openSession();
					if (Control.getGammeDao().isExisteAvecNom(gamme, session)) {
						gamme = Control.getGammeDao().TrouverAvecNom(gamme,
								session);
						Control.getGammeForm().vider();
						Control.getGammeForm().GammeVersForm(gamme);
						Control.getPrincipal()
								.getTabbedPane()
								.addTab("Gamme",
										new ImageIcon(
												Principal.class
														.getResource("/cc/black/png/cert_icon&16.png")),
										Control.getGammeForm(), null);
						Control.getPrincipal()
								.getTabbedPane()
								.setSelectedIndex(
										Control.getPrincipal().getTabbedPane()
												.getTabCount() - 1);
					} else {
						JOptionPane
								.showMessageDialog(
										null,
										"- Cette gamme n'existe pas dans votre base de donnees",
										"Erreur", JOptionPane.WARNING_MESSAGE);
					}
					session.close();
				} else {
					JOptionPane.showMessageDialog(null,
							"- Il faut renseigner le champ gamme", "Erreur",
							JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		button_5.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/info_icon&24.png")));
		button_5.setPreferredSize(new Dimension(50, 50));
		button_5.setMnemonic(KeyEvent.VK_ENTER);
		button_5.setBackground(Color.WHITE);
		button_5.setBounds(328, 146, 44, 34);
		panel.add(button_5);

		JButton button_6 = new JButton("");
		button_6.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (!C_marque.getSelectedItem().toString().equals("")) {
					Marque marque = new Marque();
					marque.setNom(C_marque.getSelectedItem().toString());
					Session session = HibernateUtil.getSessionFactory()
							.openSession();
					if (Control.getMarqueDao().isExisteAvecNom(marque, session)) {
						marque = Control.getMarqueDao().TrouverAvecNom(marque,
								session);
						Control.getMarqueForm().vider();
						Control.getMarqueForm().MarqueVersForm(marque);
						Control.getPrincipal()
								.getTabbedPane()
								.addTab("Marque",
										new ImageIcon(
												Principal.class
														.getResource("/cc/black/png/cert_icon&16.png")),
										Control.getMarqueForm(), null);
						Control.getPrincipal()
								.getTabbedPane()
								.setSelectedIndex(
										Control.getPrincipal().getTabbedPane()
												.getTabCount() - 1);
					} else {
						JOptionPane
								.showMessageDialog(
										null,
										"- Cette marque n'existe pas dans votre base de donnees",
										"Erreur", JOptionPane.WARNING_MESSAGE);
					}
					session.close();
				} else {
					JOptionPane.showMessageDialog(null,
							"- Il faut renseigner le champ marque", "Erreur",
							JOptionPane.WARNING_MESSAGE);
				}

			}
		});
		button_6.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/info_icon&24.png")));
		button_6.setPreferredSize(new Dimension(50, 50));
		button_6.setMnemonic(KeyEvent.VK_ENTER);
		button_6.setBackground(Color.WHITE);
		button_6.setBounds(328, 188, 44, 34);
		panel.add(button_6);

		JButton button_7 = new JButton("");
		button_7.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (!C_fournisseur.getSelectedItem().toString().equals("")) {
					Fournisseur fournisseur = new Fournisseur();
					fournisseur.setNom(C_fournisseur.getSelectedItem()
							.toString());
					Session session = HibernateUtil.getSessionFactory()
							.openSession();
					if (Control.getFournisseurDao().isExisteAvecNom(
							fournisseur, session)) {
						fournisseur = Control.getFournisseurDao()
								.TrouverAvecNom(fournisseur, session);
						Control.getFournisseurForm().vider();
						Control.getFournisseurForm().FournisseurVerForm(
								fournisseur);
						Control.getPrincipal()
								.getTabbedPane()
								.addTab("Fournisseur",
										new ImageIcon(
												Principal.class
														.getResource("/cc/black/png/cert_icon&16.png")),
										Control.getFournisseurForm(), null);
						Control.getPrincipal()
								.getTabbedPane()
								.setSelectedIndex(
										Control.getPrincipal().getTabbedPane()
												.getTabCount() - 1);
					} else {
						JOptionPane
								.showMessageDialog(
										null,
										"- Ce fournisseur n'existe pas dans votre base de donnees",
										"Erreur", JOptionPane.WARNING_MESSAGE);
					}
					session.close();
				} else {
					JOptionPane.showMessageDialog(null,
							"- Il faut renseigner le champ fournisseur",
							"Erreur", JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		button_7.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/info_icon&24.png")));
		button_7.setPreferredSize(new Dimension(50, 50));
		button_7.setMnemonic(KeyEvent.VK_ENTER);
		button_7.setBackground(Color.WHITE);
		button_7.setBounds(328, 272, 44, 34);
		panel.add(button_7);

		C_dateAcquisition = new JCalendarCombo(JCalendarCombo.DISPLAY_DATE
				| JCalendarCombo.DISPLAY_TIME, true);
		C_dateAcquisition.setEditable(true);
		C_dateAcquisition.setBounds(133, 318, 239, 32);
		panel.add(C_dateAcquisition);
		C_dateAcquisition.setDateFormat(new SimpleDateFormat("dd-MM-yyyy"));

		JPanel panel_1 = new JPanel();
		panel_1.setLayout(null);
		panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
		panel_1.setBounds(506, 213, 221, 225);
		add(panel_1);

		imagePanel = new ImagePanel();
		imagePanel.setBorder(new LineBorder(new Color(0, 0, 0)));
		imagePanel.setBackground(Color.WHITE);
		imagePanel.setBounds(36, 11, 149, 154);
		panel_1.add(imagePanel);

		T_lienImage = new JTextField();
		T_lienImage.setColumns(10);
		T_lienImage.setBounds(10, 176, 165, 28);
		panel_1.add(T_lienImage);

		JButton button = new JButton("");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				JFileChooser chooser = new JFileChooser();
				int retour = chooser.showOpenDialog(Control.getPrincipal());
				if (retour == JFileChooser.APPROVE_OPTION) {
					T_lienImage.setText(chooser.getSelectedFile()
							.getAbsolutePath());
					nomImage = chooser.getSelectedFile().getName();
					imagePanel.loadImage(chooser.getSelectedFile()
							.getAbsolutePath());
				}
			}
		});
		button.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/zoom_icon&16.png")));
		button.setPreferredSize(new Dimension(50, 50));
		button.setMnemonic(KeyEvent.VK_ENTER);
		button.setBackground(Color.WHITE);
		button.setBounds(185, 176, 26, 28);
		panel_1.add(button);

		JButton button_1 = new JButton("");
		button_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Session session = HibernateUtil.getSessionFactory()
						.openSession();
				Control.getArticleForm().vider(session);
				session.close();
			}
		});
		button_1.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/delete_icon&32.png")));
		button_1.setPreferredSize(new Dimension(50, 50));
		button_1.setMnemonic(KeyEvent.VK_ENTER);
		button_1.setBackground(Color.WHITE);
		button_1.setBounds(70, 11, 50, 50);
		add(button_1);

		JButton button_2 = new JButton("");
		button_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Session session = HibernateUtil.getSessionFactory().openSession();
				if (errForm(session).equals("")) {
					if (articleId == null) {
						// creer
						Article article = new Article();
						article = FormVersArticle(article, session);
						if (Control.getArticleDao().isExisteAvecCode(article,session)) {
							JOptionPane.showMessageDialog(null,"cet equipement existe deja dans votre base do donnees",
									"Erreur",JOptionPane.WARNING_MESSAGE);
						} else {
							article = FormVersArticle(article, session);
							Control.getArticleDao().Creer(article, session);
							articleId = article.getId();
							if (article.getUtilisateur() != null) {
								Affectation affectation = new Affectation();
								affectation.setArticle(article);
								affectation.setDate(Dates.stringToDate(Dates.getTodayDate()));
								affectation.setUtilisateurDest(article.getUtilisateur());
								Control.getAffectationDao().Creer(affectation,session);
							}
						}
					} else {
						// modif
						Article article = new Article();
						article = FormVersArticle(article, session);
						if (Control.getArticleDao().isExisteAvecCode(article,session)) {
							if (articleId.equals(Control.getArticleDao().TrouverAvecCode(article, session).getId())) {
								article = Control.getArticleDao().TrouverAvecId(articleId, article,session);
								if (!C_utilisateur.getSelectedItem().toString().equals("")) {
									Utilisateur utilisateur = new Utilisateur();
									utilisateur.setNomPrenom(C_utilisateur.getSelectedItem().toString());
									utilisateur = Control.getUtilisateurDao().TrouverAvecNom(utilisateur,session);
									if (article.getUtilisateur() == null) {
										Affectation affectation = new Affectation();
										affectation.setArticle(article);
										affectation.setDate(Dates.stringToDate(Dates.getTodayDate()));
										affectation.setUtilisateurDest(utilisateur);
										Control.getAffectationDao().Creer(affectation, session);
									} else {
										if (article.getUtilisateur().equals(Control.getUtilisateurDao().
												TrouverAvecNom(utilisateur,session))) {
											Affectation affectation = new Affectation();
											affectation.setArticle(article);
											affectation.setDate(Dates.stringToDate(Dates.getTodayDate()));
											affectation.setUtilisateurDest(article.getUtilisateur());
											affectation.setUtilisateurSrc(article.getUtilisateur());
											Control.getAffectationDao().Creer(affectation, session);
										}
									}
								}
								article = FormVersArticle(article, session);
								Control.getArticleDao().modifier(article,session);
							} else {
								JOptionPane.showMessageDialog(null,"cet equipement existe deja dans votre base de donnees",
										"Erreur",JOptionPane.WARNING_MESSAGE);
							}
						} else {
							article = Control.getArticleDao().TrouverAvecId(articleId, article, session);
							if (!C_utilisateur.getSelectedItem().toString().equals("")) {
								Utilisateur utilisateur = new Utilisateur();
								utilisateur.setNomPrenom(C_utilisateur.getSelectedItem().toString());
								utilisateur = Control.getUtilisateurDao().TrouverAvecNom(utilisateur, session);
								if (article.getUtilisateur() == null) {
									Affectation affectation = new Affectation();
									affectation.setArticle(article);
									affectation.setDate(Dates.stringToDate(Dates.getTodayDate()));
									affectation.setUtilisateurDest(utilisateur);
									Control.getAffectationDao().Creer(affectation, session);
								} else {
									if (article.getUtilisateur().equals(Control.getUtilisateurDao()
													.TrouverAvecNom(utilisateur,session))) {
										Affectation affectation = new Affectation();
										affectation.setArticle(article);
										affectation.setDate(Dates.stringToDate(Dates.getTodayDate()));
										affectation.setUtilisateurDest(article.getUtilisateur());
										affectation.setUtilisateurSrc(article.getUtilisateur());
										Control.getAffectationDao().Creer(affectation, session);
									}
								}
							}
							article = FormVersArticle(article, session);
							Control.getArticleDao().modifier(article, session);
						}
					}
				} else {
					JOptionPane.showMessageDialog(null, errForm(session),"Erreur", JOptionPane.WARNING_MESSAGE);
				}
				session.close();
			}
		});
		button_2.setIcon(new ImageIcon(ArticleForm.class.getResource("/cc/black/png/save_icon&32.png")));
		button_2.setPreferredSize(new Dimension(50, 50));
		button_2.setMnemonic(KeyEvent.VK_ENTER);
		button_2.setBackground(Color.WHITE);
		button_2.setBounds(10, 11, 50, 50);
		add(button_2);

		JSeparator separator = new JSeparator();
		separator.setBounds(10, 81, 630, 2);
		add(separator);

		JPanel panel_2 = new JPanel();
		panel_2.setBorder(new TitledBorder(null, "Affectation ",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_2.setBounds(422, 101, 380, 69);
		add(panel_2);
		panel_2.setLayout(null);

		C_utilisateur.setBounds(112, 24, 204, 34);
		panel_2.add(C_utilisateur);

		JLabel lblUtilisateur = new JLabel("Utilisateur :");
		lblUtilisateur.setBounds(10, 27, 92, 28);
		panel_2.add(lblUtilisateur);

		JButton button_3 = new JButton("");
		button_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (!C_utilisateur.getSelectedItem().toString().equals("")) {
					Utilisateur utilisateur = new Utilisateur();
					utilisateur.setNomPrenom(C_utilisateur.getSelectedItem()
							.toString());
					Session session = HibernateUtil.getSessionFactory()
							.openSession();
					if (Control.getUtilisateurDao().isExisteAvecNomEtPrenom(
							utilisateur, session)) {
						utilisateur = Control.getUtilisateurDao()
								.TrouverAvecNom(utilisateur, session);
						Control.getUtilisateurForm().vider(session);
						Control.getUtilisateurForm().UtilisateurVersForm(
								utilisateur);
						Control.getPrincipal()
								.getTabbedPane()
								.addTab("Utilisateur",
										new ImageIcon(
												Principal.class
														.getResource("/cc/black/png/cert_icon&16.png")),
										Control.getUtilisateurForm(), null);
						Control.getPrincipal()
								.getTabbedPane()
								.setSelectedIndex(
										Control.getPrincipal().getTabbedPane()
												.getTabCount() - 1);
					} else {
						JOptionPane
								.showMessageDialog(
										null,
										"- Ce utilisateur n'existe pas dans votre base de donnees",
										"Erreur", JOptionPane.WARNING_MESSAGE);
					}
					session.close();
				} else {
					JOptionPane.showMessageDialog(null,
							"- Il faut renseigner le champ utilisateur",
							"Erreur", JOptionPane.WARNING_MESSAGE);
				}

			}
		});
		button_3.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/cc/black/png/info_icon&24.png")));
		button_3.setPreferredSize(new Dimension(50, 50));
		button_3.setMnemonic(KeyEvent.VK_ENTER);
		button_3.setBackground(Color.WHITE);
		button_3.setBounds(326, 24, 44, 34);
		panel_2.add(button_3);

		JButton button_8 = new JButton("");
		button_8.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Session session = HibernateUtil.getSessionFactory()
						.openSession();
				vider(session);
				articleId = null;
				session.close();
			}
		});
		button_8.setIcon(new ImageIcon(ArticleForm.class
				.getResource("/images/png/Add32.png")));
		button_8.setPreferredSize(new Dimension(50, 50));
		button_8.setMnemonic(KeyEvent.VK_ENTER);
		button_8.setBackground(Color.WHITE);
		button_8.setBounds(129, 11, 50, 50);
		add(button_8);

	}

	public void ArticleVersForm(Article article) {
		T_code.setText(article.getCode());
		T_lienImage.setText(article.getLienImage());
		imagePanel.loadImage(article.getLienImage());
		T_ns.setText(article.getNs());
		C_etat.setSelectedItem(article.getEtat());
		if (article.getDateAchat() != null) {
			C_dateAcquisition
					.setSelectedItem(article.getDateAchat().toString());
		}
		if (article.getMarque() != null) {
			C_marque.setSelectedItem(article.getMarque().getNom());
		}
		if (article.getFamille() != null) {
			C_famille.setSelectedItem(article.getFamille().getNom());
		}
		if (article.getGamme() != null) {
			C_gamme.setSelectedItem(article.getGamme().getNom());
		}
		if (article.getUtilisateur() != null) {
			C_utilisateur.setSelectedItem(article.getUtilisateur()
					.getNomPrenom());
		}
		if (article.getFournisseur() != null) {
			C_fournisseur.setSelectedItem(article.getFournisseur().getNom());
		}

	}

	public Article FormVersArticle(Article article, Session session) {
		article.setCode(T_code.getText());
		article.setEtat(C_etat.getSelectedItem().toString());
		article.setNs(T_ns.getText());
		if (!C_dateAcquisition.getSelectedItem().toString().equals("")) {
			article.setDateAchat(Dates.stringToDate(C_dateAcquisition
					.getSelectedItem().toString()));
		}
		if (!C_famille.getSelectedItem().toString().equals("")) {
			Famille famille = new Famille();
			famille.setNom(C_famille.getSelectedItem().toString());
			famille = Control.getFamilleDao().TrouverAvecNom(famille, session);
			article.setFamille(famille);
		}
		if (!C_fournisseur.getSelectedItem().toString().equals("")) {
			Fournisseur fournisseur = new Fournisseur();
			fournisseur.setNom(C_fournisseur.getSelectedItem().toString());
			fournisseur = Control.getFournisseurDao().TrouverAvecNom(
					fournisseur, session);
			article.setFournisseur(fournisseur);
		}
		if (!C_gamme.getSelectedItem().toString().equals("")) {
			Gamme gamme = new Gamme();
			gamme.setNom(C_gamme.getSelectedItem().toString());
			gamme = Control.getGammeDao().TrouverAvecNom(gamme, session);
			article.setGamme(gamme);
		}
		if (!C_marque.getSelectedItem().toString().equals("")) {
			Marque marque = new Marque();
			marque.setNom(C_marque.getSelectedItem().toString());
			marque = Control.getMarqueDao().TrouverAvecNom(marque, session);
			article.setMarque(marque);
		}
		if (!C_utilisateur.getSelectedItem().toString().equals("")) {
			Utilisateur utilisateur = new Utilisateur();
			utilisateur
					.setNomPrenom(C_utilisateur.getSelectedItem().toString());
			utilisateur = Control.getUtilisateurDao().TrouverAvecNom(
					utilisateur, session);
			article.setUtilisateur(utilisateur);
		}
		article.setLienImage(T_lienImage.getText());
		if (!T_lienImage.getText().toString()
				.equals("images/imageDefaut/default.png")) {
			article.setLienImage(T_lienImage.getText());
			article.setLienImage("images/imageArticles/" + nomImage);
			FileDirectoryUtil.copyFile(T_lienImage.getText(),
					"images/imageArticles/" + nomImage);
		} else {
			article.setLienImage(T_lienImage.getText());
		}
		return article;
	}

	public void vider(Session session) {
		T_code.setText("");
		T_lienImage.setText("images/imageDefaut/default.png");
		imagePanel.loadImage("images/imageDefaut/default.png");
		T_ns.setText("");
		C_dateAcquisition.setSelectedItem("");
		C_etat.setSelectedIndex(0);
		C_famille.RemplireComboListe(Control.getFamilleDao().ListeNomsFamille(
				session));
		C_fournisseur.RemplireComboListe(Control.getFournisseurDao()
				.ListeNomsFournisseur(session));
		C_gamme.RemplireComboListe(Control.getGammeDao()
				.ListeNomsGamme(session));
		C_marque.RemplireComboListe(Control.getMarqueDao().ListeNomsMarque(
				session));
		C_utilisateur.RemplireComboListe(Control.getUtilisateurDao()
				.ListeNomsPrenomsUtilisateur(session));
		articleId = null;
	}

	public String errForm(Session session) {
		String err = "";
		if (T_code.getText().equals("")) {
			err = err + "- il faut donner un code pour l'equipement\n";
		}

		Famille famille = new Famille();
		famille.setNom(C_famille.getSelectedItem().toString());
		if (!famille.getNom().equals("")
				&& !Control.getFamilleDao().isExisteAvecNom(famille, session)) {
			err = err
					+ "- cette famille n'existe pas dans votre base de donnees\n";
		}

		Gamme gamme = new Gamme();
		gamme.setNom(C_gamme.getSelectedItem().toString());
		if (!gamme.getNom().equals("")
				&& !Control.getGammeDao().isExisteAvecNom(gamme, session)) {
			err = err
					+ "- cette gamme n'existe pas dans votre base de donnees\n";
		}

		Fournisseur fournisseur = new Fournisseur();
		fournisseur.setNom(C_fournisseur.getSelectedItem().toString());
		if (!fournisseur.getNom().equals("")
				&& !Control.getFournisseurDao().isExisteAvecNom(fournisseur,
						session)) {
			err = err
					+ "- cet fournisseur n'existe pas dans votre base de donnees\n";
		}

		Utilisateur utilisateur = new Utilisateur();
		utilisateur.setNomPrenom(C_utilisateur.getSelectedItem().toString());
		if (!utilisateur.getNomPrenom().equals("")
				&& !Control.getUtilisateurDao().isExisteAvecNomEtPrenom(
						utilisateur, session)) {
			err = err
					+ "- cet utilisateur n'existe pas dans votre base de donnees\n";
		}

		Marque marque = new Marque();
		marque.setNom(C_marque.getSelectedItem().toString());
		if (!marque.getNom().equals("")
				&& !Control.getMarqueDao().isExisteAvecNom(marque, session)) {
			err = err + "- ce marque n'existe pas dans votre base de donnees\n";
		}
		return err;
	}

	public FilterComboBox ListeCombUtilisateur(Session session,
			FilterComboBox comboBox) {
		Utilisateur utilisateur = new Utilisateur();
		List<Utilisateur> utilisateurs = Control.getUtilisateurDao().charger(
				utilisateur, session);
		List<String> listeRet = new ArrayList<String>();
		listeRet.add("");
		if (utilisateur != null) {
			for (int i = 0; i < utilisateurs.size(); i++) {
				listeRet.add(utilisateurs.get(i).getNomPrenom());
			}
		}
		comboBox = new FilterComboBox(listeRet);
		return comboBox;
	}

	public FilterComboBox ListeCombFamille(Session session,
			FilterComboBox comboBox) {
		Famille famille = new Famille();
		List<Famille> familles = Control.getFamilleDao().charger(famille,
				session);
		List<String> listeRet = new ArrayList<String>();
		listeRet.add("");
		if (famille != null) {
			for (int i = 0; i < familles.size(); i++) {
				listeRet.add(familles.get(i).getNom());
			}
		}
		comboBox = new FilterComboBox(listeRet);
		return comboBox;
	}

	public FilterComboBox ListeCombGamme(Session session,
			FilterComboBox comboBox) {
		Gamme gamme = new Gamme();
		List<Gamme> gammes = Control.getGammeDao().charger(gamme, session);
		List<String> listeRet = new ArrayList<String>();
		listeRet.add("");
		if (gamme != null) {
			for (int i = 0; i < gammes.size(); i++) {
				listeRet.add(gammes.get(i).getNom());
			}
		}
		comboBox = new FilterComboBox(listeRet);
		return comboBox;
	}

	public FilterComboBox ListeCombMarque(Session session,
			FilterComboBox comboBox) {
		Marque marque = new Marque();
		List<Marque> marques = Control.getMarqueDao().charger(marque, session);
		List<String> listeRet = new ArrayList<String>();
		listeRet.add("");
		if (marque != null) {
			for (int i = 0; i < marques.size(); i++) {
				listeRet.add(marques.get(i).getNom());
			}
		}
		comboBox = new FilterComboBox(listeRet);
		return comboBox;
	}

	public FilterComboBox ListeCombFournisseur(Session session,
			FilterComboBox comboBox) {
		Fournisseur fournisseur = new Fournisseur();
		List<Fournisseur> fournisseurs = Control.getFournisseurDao().charger(
				fournisseur, session);
		List<String> listeRet = new ArrayList<String>();
		listeRet.add("");
		if (fournisseur != null) {
			for (int i = 0; i < fournisseurs.size(); i++) {
				listeRet.add(fournisseurs.get(i).getNom());
			}
		}
		comboBox = new FilterComboBox(listeRet);
		return comboBox;
	}

	public static final Long getArticleId() {
		return articleId;
	}

	public static final void setArticleId(Long articleId) {
		ArticleForm.articleId = articleId;
	}
}
